package cn.iocoder.yudao.module.trade.controller.admin.order.vo;

import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDateTime;

@Schema(description = "管理后台 - 贵金属交易订单 Response VO")
@Data
@ExcelIgnoreUnannotated
public class TradeOrderRespVO {

    @Schema(description = "订单编号（时间戳+用户ID哈希）", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("订单编号（时间戳+用户ID哈希）")
    private String orderNo;

    @Schema(description = "订单类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("订单类型")
    private Integer orderType;

    @Schema(description = "贵金属类型", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("贵金属类型")
    private Integer metalType;

    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25184")
    private Long userId;

    @Schema(description = "用户编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "25184")
    @ExcelProperty("客户")
    private String userName;

    @Schema(description = "用户备注", example = "随便")
    @ExcelProperty("备注")
    private String userRemark;

    @Schema(description = "订单状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("订单状态")
    private Integer status;

    @Schema(description = "商家备注", example = "你说的对")
    @ExcelProperty("商家备注")
    private String remark;

    @Schema(description = "支付订单编号", example = "18918")
    @ExcelProperty("支付订单编号")
    private Long payOrderId;

    @Schema(description = "支付状态", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @ExcelProperty("支付状态")
    private Integer payStatus;

    @Schema(description = "结算时间")
    @ExcelProperty("结算时间")
    private LocalDateTime settleTime;

    @Schema(description = "结算方式")
    @ExcelProperty("结算方式")
    private Integer settleMethod;

    @Schema(description = "订单取消时间")
    @ExcelProperty("订单取消时间")
    private LocalDateTime cancelTime;

    @Schema(description = "下单重量", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("下单重量")
    private BigDecimal weight;

    @Schema(description = "旧料重量(仅在旧料兑换)")
    @ExcelProperty("旧料重量(仅在旧料兑换)")
    private BigDecimal exchangeWeight;

    @Schema(description = "已收款金额", example = "9204")
    @ExcelProperty("已收款金额")
    private BigDecimal receivePrice;

    private BigDecimal metalPrice;

    @Schema(description = "已收定金")
    @ExcelProperty("已收定金")
    private BigDecimal receiveDeposit;
    private BigDecimal receiveDepositAdd;

    @Schema(description = "下单价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "24911")
    @ExcelProperty("下单价格")
    private BigDecimal orderPrice;

    @Schema(description = "结算价格", requiredMode = Schema.RequiredMode.REQUIRED, example = "16114")
    @ExcelProperty("结算价格")
    private BigDecimal settlePrice;

    @Schema(description = "优惠金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "26889")
    @ExcelProperty("优惠金额")
    private BigDecimal discountPrice;

    @Schema(description = "运费金额", requiredMode = Schema.RequiredMode.REQUIRED, example = "23022")
    @ExcelProperty("运费金额")
    private BigDecimal deliveryPrice;

    @Schema(description = "定金优惠金额", example = "17878")
    @ExcelProperty("定金优惠金额")
    private BigDecimal depositDiscount;

    @Schema(description = "延期费用")
    @ExcelProperty("延期费用")
    private BigDecimal delayFee;

    @Schema(description = "毛利润")
    @ExcelProperty("毛利润")
    private BigDecimal grossProfit;

    @Schema(description = "所获积分")
    @ExcelProperty("所获积分")
    private Integer point;

    @Schema(description = "总服务费")
    @ExcelProperty("总服务费")
    private BigDecimal totalServiceFee;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createTime;

    /**
     * 折料后重量
     */
    private BigDecimal convertWeight;
    /**
     * 旧料成色
     */
    private BigDecimal purity;

    /**
     * 扣项费用
     */
    private BigDecimal deductPrice;
    /**
     * 配送方式
     */
    private Integer deliveryType;
    /**
     * 自提核验码
     */
    private String pickUpVerifyCode;

    private BigDecimal settlePriceTotal;
    private BigDecimal receiveDelayFee;
    private BigDecimal receiveProcessFee;
    private BigDecimal receiveAdditionalFee;
    /**
     * 定金参数/g
     */
    private BigDecimal depositPriceConf;
    /**
     * 免息天数
     */
    private Integer interestFreeDays;
    /**
     * 延期费用（参数）
     */
    private BigDecimal delayFeeConf;
    /**
     * 工费参数
     */
    private BigDecimal processConf;

}